﻿//#define _CRT_SECURE_NO_WARNINGS  1
////一定要动手，例子不管多么简单，建议至少自己手敲一遍看看是否理解了里头的细枝末节。
////一定要学会思考，思考为什么要这样，而不是那样。还要举一反三地思考
//#include"string 模拟实现.h"
//#include<string>
//namespace jz {
//	void test_string8()
//	{
//		string s1("hello world");
//		string s2(s1);
//
//		cout << s1 << endl;
//		cout << s2 << endl;
//
//		string s3("xxxxxxxxxxxxxxxx");
//		s1 = s3;
//		cout << s1 << endl;
//		cout << s3 << endl;
//	}
//
//}
//class Solution {
//public:
//	string multiply(string num1, string num2) {
//		if (num1 == "0" || num2 == "0") {
//			return "0";
//		}
//		int m = num1.size(), n = num2.size();
//		auto ansArr = vector<int>(m + n);
//		for (int i = m - 1; i >= 0; i--) {
//			int x = num1.at(i) - '0';
//			for (int j = n - 1; j >= 0; j--) {
//				int y = num2.at(j) - '0';
//				ansArr[i + j + 1] += x * y;
//			}
//		}
//		for (int i = m + n - 1; i > 0; i--) {
//			ansArr[i - 1] += ansArr[i] / 10;
//			ansArr[i] %= 10;
//		}
//		int index = ansArr[0] == 0 ? 1 : 0;
//		string ans;
//		while (index < m + n) {
//			ans.push_back(ansArr[index]);
//			index++;
//		}
//		for (auto& c : ans) {
//			c += '0';
//		}
//		return ans;
//	}
//};
//
//int main()
//{
//	jz::test_string8();
//	string str1("123");
//	string str2("456");
//	string multiply(str1, str2);
//
//	//验证
//	//const 成员函数
//	//const 迭代器
//	//reserve 扩容函数的实现 new delete 要匹配
//	//pushback（char n) 1. 扩容时要注意capacity为0的情况  2. 要注意/0的问题？结尾置为/0
//	//append (char* str) 实现
//	//+=(char)
//	//+=(char*str)
//	//insert 实现注意size_减为-1时，解决方法
//	//erase 擦除 实现，两种
//	//find实现  find（char c)  find (char* str)//会出现浅拷贝问题，
//	//=赋值
//	//流插入  流提取		 一般重载在全局
//
//	class Solution {
//	public:
//		int StrToInt(string str) {
//			const int len = str.length();
//			if (len == 0) { return 0; }
//			int i = 0;
//			while (str[i] == ' ') { i++; }
//			bool neg = false;
//			if (!isdigit(str[i])) {
//				if (str[i] != '+' && str[i] != '-') { return 0; }
//				if (str[i] == '-') { neg = true; }
//				i++;
//			}
//			long long res = 0L;
//			while (isdigit(str[i])) {
//				res = res * 10 + (str[i++] - '0');
//				if (!neg && res > INT_MAX) { return 0; }
//				if (neg && res > INT_MAX + 1L) { return 0; }
//			}
//			while (str[i] == ' ') { i++; }
//			if (i < len) { return 0; }
//			return static_cast<int>(neg ? -res : res);
//		}
//	};
//	class Solution {
//	public:
//		int StrToInt(string str) {
//			int n = str.size();
//			int flag = 1;
//			if (str[0] == '-') flag = -1;
//			int num = 0;
//			for (int i = 0; i < n; i++) {
//				if (str[i] == '-' || str[i] == '+')
//					continue;
//				if (str[i] >= '0' && str[i] <= '9')
//					num = num * 10 + (str[i] - '0');
//				else
//					return 0;
//			}
//			return flag * num;
//		}
//	};
//	class Solution {
//	public:
//		int StrToInt(string str) {
//			const char* ch = str.c_str();
//			if (ch == nullptr)
//			{
//				return 0;
//			}
//			int len = str.size();
//			if (len == 0)
//			{
//				return 0;
//			}
//			if (len == 1)
//			{
//				if (str[0] < '0' || str[0]>'9')
//					return 0;
//			}
//			int i = 0;
//			int flag = 1;
//			//判断第一个字符类型
//			if (str[0] >= '0' && str[0] <= '9' || str[0] == '+')
//			{
//				flag = 1;
//			}
//			else if (str[0] == '-')
//			{
//				flag = -1;
//			}
//			else
//				return 0;
//			i = 1;
//			while (i < len)
//			{
//				if (str[i] >= '0' && str[i] <= '9')
//				{
//					i++;
//				}
//				else
//				{
//					return 0;
//				}
//			}
//			long long num = 0;
//			for (i = 0; i < len; i++)
//			{
//				if (i == 0)
//				{
//					if (str[i] >= '0' && str[i] <= '9')
//						num = num * 10 + (str[i] - '0');
//				}
//				else
//				{
//					num = num * 10 + (str[i] - '0');
//				}
//			}
//			return num *= flag;
//		}
//	};
//
//
//
//	
//
//	return 0;
//}
